<?php 
// file: uploadfile.php
// author: http://blog.unijimpe.net
// date: 27/02/2010
class UploadSolicitud extends DBManager {
	var $maxsize = 0;
	var $message = "";
	var $newfile = "";
	var $newpath = "";
	
	var $filesize = 0;
	var $filetype = "";
	var $filename = "";
	var $filetemp;
	var $fileexte;
	
	var $allowed = array("image/bmp","image/gif","image/jpeg","image/pjpeg","image/png","image/x-png","pdf");
	var $blocked = array("php","phtml","php3","php4","js","shtml","pl","py","exe","EXE");
	var $isimage;
	
	var $isupload;
        var  $con;
        
	//funcion para comprobar conexion
        function open_con()
	{
            $this->con=parent::conectar();
            return $this->con;
	}

	//funcion para cerra conexion
	function close_con()
	{
            parent::desconectar();
	}
        
        function new_archivo_solicitud($datos)
        {
            parent::conectar();
            
            $record["idsolicitud"]        =   $datos[0];
            $record["idempleado"]         =   $datos[1];
            $record["idobjetivoarchivo"]  =   $datos[2];
            $record["nombrearc_fsoli"]    =   $datos[3];
            $record["file_fsoli"]         =   $datos[4];
            $record["formato_fsoli"]      =   $datos[5];
            $record["observacion_fsoli"]  =   $datos[6];
            
	    $new_archivo_solicitud               =   $this->obj_con->AutoExecute("tp_archivo_solicitud", $record, 'INSERT');

            if($new_archivo_solicitud)
            {
            	return true;
            }
            else
            {
		return false;
            }
            
            parent::desconectar();
        }
        
        
        function update_archivo_solicitud($idarchivo_sol,$datos)
        {
            parent::conectar();
         
            $record["idempleado"]         =   $datos[0];
            $record["idobjetivoarchivo"]  =   $datos[1];
            $record["nombrearc_fsoli"]    =   $datos[2];  
            $record["observacion_fsoli"]  =   $datos[3];
            
	    $update_archivo_solicitud       =   $this->obj_con->AutoExecute('tp_archivo_solicitud', $record, 'UPDATE','idarchivosolicitud = '.$idarchivo_sol);

            if($update_archivo_solicitud)
            {
            	return true;
            }
            else
            {
		return false;
            }
            parent::desconectar();
        }        
        
        function update_full_archivo_solicitud($idarchivo_sol,$idsolicitud,$datos,$path)
        {
            parent::conectar();
            $record["idempleado"]         =   $datos[0];
            $record["idobjetivoarchivo"]  =   $datos[1];
            $record["nombrearc_fsoli"]    =   $datos[2];
            $record["file_fsoli"]         =   $datos[3];
            $record["formato_fsoli"]      =   $datos[4];
            $record["observacion_fsoli"]  =   $datos[5];
            
            $name_file                       =   $this->get_campo_file_sol('idarchivosolicitud = '.$idarchivo_sol, 'file_fsoli');
	    $update_archivo_solicitud        =   $this->obj_con->AutoExecute('tp_archivo_solicitud', $record, 'UPDATE','idarchivosolicitud = '.$idarchivo_sol);
            
            if($update_archivo_solicitud)
            {
                @unlink($path.$idsolicitud."/".$name_file);
            	return true;
            }
            else
            {
		return false;
            }
        }           
        
        
        function delete_file_solicitud($datos,$path)
        {
            parent::conectar();
            
            $name_file       = $this->get_campo_file_sol("idarchivosolicitud = ".$datos[0], "file_fsoli");
            $delete_file     = "delete from tp_archivo_solicitud where idarchivosolicitud = ".$datos[0]." and idsolicitud = ".$datos[1];
            $recordset_all   =  $this->obj_con-> Execute($delete_file);
            
            if($recordset_all)
            {
                unlink($path.$datos[1]."/".$name_file);
                return true;
            }
            else
            {
                return false;
            }
        }
        
        function get_campo_file_sol($condicion,$get_campo)
	{
            parent::conectar();

            $consulta  =   "select ".$get_campo." from tp_archivo_solicitud where ".$condicion;
            $record_consulta = $this->obj_con->GetRow($consulta);
            return  $record_consulta[$get_campo];
        }        
        
        function full_form_solicitud($obj_sesion)
        {
            parent::conectar();
            
            $idfile    =   $_POST['idfile'];
            
            if(!$obj_sesion->validar_sesion())
            {
                $res = array('success'  => 2);
            }
            elseif(!$this->open_con())
            {
                $res = array('success'  => 3);
            }   
            else
            {
                $idsolicitud    =   $this->get_campo_file_sol("idarchivosolicitud = ".$idfile, "idsolicitud");
                $titulo         =   $this->get_campo_file_sol("idarchivosolicitud = ".$idfile, "nombrearc_fsoli");
                $idobjetivo     =   $this->get_campo_file_sol("idarchivosolicitud = ".$idfile, "idobjetivoarchivo");
                $observacion    =   $this->get_campo_file_sol("idarchivosolicitud = ".$idfile, "observacion_fsoli");
                $archivo        =   PATH_LOAD_SOLICITANTES.$idsolicitud."/".$this->get_campo_file_sol("idarchivosolicitud = ".$idfile, "file_fsoli");
                $tipo_file      =   $this->get_campo_file_sol("idarchivosolicitud = ".$idfile, "formato_fsoli");
                
                $res = array('success'  => 1,    
                        'name_file'     => $titulo, 
                        'idobjetivo'    => $idobjetivo, 
                        'observacion'   => $observacion,
                        'archivo'       => $archivo,
                        'formato'       => $tipo_file
                    );
            }            
            
            echo json_encode($res);
            parent::desconectar();
        }
	

	function setFile($field) 
        {
		$this->filesize = $_FILES[$field]['size'];
		$this->filename = $_FILES[$field]['name'];
		$this->filetemp = $_FILES[$field]['tmp_name'];
		$this->filetype = mime_content_type($this->filetemp);
		$this->fileexte = substr($this->filename, strrpos($this->filename, '.')+1);
		$this->newfile = substr(md5(uniqid(rand())),0,10).".".$this->fileexte;
	}
	function setPath($value) {
		$this->newpath = $value;
	}
	function setMaxSize($value) {
		$this->maxsize = $value;	
	}
	function isImage($value) {
		$this->isimage = $value;
	}
	function save() {
		if (is_uploaded_file($this->filetemp)) {
			// check if file valid
			if ($this->filename == "") {
				$this->message = "NO EXISTE NINGUN ARCHIVO PARA ADJUNTAR";
				$this->isupload = false;
				return false;
			}
			// check max size
			if ($this->maxsize != 0) {
				if ($this->filesize > $this->maxsize*1024) {
					$this->message = "EL ARCHIVO ES DEMASIADO GRANDE";
					$this->isupload = false;
					return false;
				}
			}
			// check if image
			if ($this->isimage) {
				// check dimensions
				if (!getimagesize($this->filetemp)) {
					$this->message = "ES INVALIDO EL ARCHIVO YA QUE NO ES UNA IMAGEN";
					$this->isupload = false;
					return false;	
				}
				// check content type
				if (!in_array($this->filetype, $this->allowed)) {
					$this->message = "INVALIDO TIPO DE ARCHIVO";
					$this->isupload = false;
					return false;
				}
			}
			// check if file is allowed
			if (in_array($this->fileexte, $this->blocked)) {
				$this->message = "EL ARCHIVO QUE DESEA AGREGAR ES PROHIBIDO SU FORMATO - ".$this->fileexte;
				$this->isupload = false;
				return false;
			}
					
			if (move_uploaded_file($this->filetemp, $this->newpath."/".$this->newfile)) {
				$this->message = "EL ARCHIVO SE ADJUNTO SIN NINGUN PROBLEMA!";
				$this->isupload = true;
				return true;
			} else {
				$this->message = "EL ARCHIVO NO FUE ADJUNTADO, INTENTE MAS TARDE";
				$this->isupload = false;
				return false;
			}
		} else {
			$this->message = "EL ARCHIVO NO FUE ADJUNTADO, INTENTE MAS TARDE";
			$this->isupload = false;
			return false;
		}
	}	
        
        
        function show_tree_files_solicitud($idsolicitud)
	{
            parent::conectar();
            $tree = new TreeExtJS();
            $data = array();

            $consulta_tipos_file    =   "select distinct(fs.idobjetivoarchivo) as idobjetivo, upper(ob.nombre_objarc) as nombre_objarc
from tp_archivo_solicitud fs 
inner join ts_objetivoarchivo ob on ob.idobjetivoarchivo = fs.idobjetivoarchivo
where fs.idsolicitud=".$idsolicitud." order by fs.idobjetivoarchivo asc";
            
            $recordset              =   $this->obj_con-> Execute($consulta_tipos_file);

            while (!$recordset->EOF)
            {
             	$idobjetivo     =   $recordset->fields['idobjetivo'];
		$nombre_objetivo=   $recordset->fields['nombre_objarc'];
                
                $show_objetivo = $idobjetivo."_";

                array_push($data,array(
					"id" => $show_objetivo,
					"idParent" =>false,
					"text" =>$nombre_objetivo,
                                        "iconCls"=>"icom_home2"
				));


    		$consulta_files     =   "select idarchivosolicitud, upper(nombrearc_fsoli) as nombre, formato_fsoli from tp_archivo_solicitud where idobjetivoarchivo = ".$idobjetivo." and idsolicitud=".$idsolicitud." order by fecharegistro_fsoli";
                $recordset_files   =    $this->obj_con-> Execute($consulta_files);
                
                while (!$recordset_files->EOF)
            	{
                    $idfile         =   $recordset_files->fields['idarchivosolicitud'];
                    $nombre_file    =   $recordset_files->fields['nombre'];
                    $tipo_icon      =   $tree->return_icon($recordset_files->fields['formato_fsoli']);
                    
                    array_push($data,array(
				"id" => $idfile,
				"idParent" =>$show_objetivo,
				"text" => $nombre_file,
                                "iconCls"=>$tipo_icon
                    ));
                    
                    $recordset_files->MoveNext();
                }

                 $recordset->MoveNext();
            }

            for($i=0;$i<count($data);$i++)
            {
		$category = $data[$i];
		$tree->addChild($category,$category["idParent"]);
            }

            echo $tree->toJson();
        }        
        
        function move_solicitud_autorizado($idsolicitud,$idautorizado,$tipo)
        {
            
            
            $raiz_origen  = PATH_SOLICITANTES;
            
            if($tipo == 3)
            {
                $raiz_destino = PATH_INSCRITOS_FIRMA;
            }
            else
            {
                $raiz_destino = PATH_INSCRITOS;
            }
            
            @mkdir($raiz_destino.$idautorizado, 0644);
            
            $open_origen = opendir($raiz_origen.$idsolicitud."/");

            while($fichero=readdir($open_origen))
            {
                $tipo = strtolower(strrchr($fichero,"."));

                if(($fichero!=".")&&($fichero!="..")&&(!is_dir($fichero))&&( !strcasecmp($tipo,".jpg") ||  !strcasecmp($tipo,".gif") || !strcasecmp($tipo,".pdf") || !strcasecmp($tipo,".png")))
                {
                  $listado_ficheros[]=$fichero;
                }
            }
            closedir($open_origen);

            foreach($listado_ficheros as $nombre)
            {
                $origen     =   $raiz_origen.$idsolicitud."/".$nombre;
                $destino    =   $raiz_destino.$idautorizado."/".$nombre;
                copy($origen,$destino);
            }            
        }
        
}
?>